/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.flowumi.entityFacade.install;

import com.flowumi.entity.Roles;
import com.flowumi.entity.Usuarios;
import com.flowumi.entityFacade.ActividadesFacadeLocal;
import com.flowumi.entityFacade.AlgoritmoFacadeLocal;
import com.flowumi.entityFacade.CasosCalificacionFacadeLocal;
import com.flowumi.entityFacade.CursosFacadeLocal;
import com.flowumi.entityFacade.CursosestudiantesFacadeLocal;
import com.flowumi.entityFacade.CursosestudiantesactividadesFacadeLocal;
import com.flowumi.entityFacade.EstadosactividadFacadeLocal;
import com.flowumi.entityFacade.EstadoscursoFacadeLocal;
import com.flowumi.entityFacade.RolesFacadeLocal;
import com.flowumi.entityFacade.UsuariosFacadeLocal;
import com.flowumi.util.EncryptUtil;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;


/**
 *
 * @author jssepulveda
 */
@Singleton
@Startup
public class InitEntitysService {

    private static final org.apache.log4j.Logger LOGGER =
            org.apache.log4j.Logger.getLogger(InitEntitysService.class);
    // @Inject @Config("status.proyect")
    @EJB
    private ActividadesFacadeLocal actividadesFacadeLocal;
    @EJB
    private AlgoritmoFacadeLocal algoritmoFacadeLocal;
    @EJB
    private CasosCalificacionFacadeLocal casosCalificacionFacadeLocal;
    @EJB
    private CursosFacadeLocal cursosFacadeLocal;
    @EJB
    private CursosestudiantesFacadeLocal cursosestudiantesFacadeLocal;
    @EJB
    private CursosestudiantesactividadesFacadeLocal cursosestudiantesactividadesFacadeLocal;
    @EJB
    private EstadosactividadFacadeLocal estadosactividadFacadeLocal;
    @EJB
    private EstadoscursoFacadeLocal estadoscursoFacadeLocal;
    @EJB
    private RolesFacadeLocal rolesFacadeLocal;
    @EJB
    private UsuariosFacadeLocal usuariosFacadeLocal;
    
   

    /**
     * 1. dependiendo de un parametro de configuracion el sistema debe
     * determinar que entidades debe crear (produccion=solo lo basico,
     * desarrollo=todo lo que se especifique como escenarios de prueba)
     */
    @PostConstruct
    private void init() {
        initEntitysHelper(); 
    }

    /**
     * metodo encargado de la inicializacion de las entidades que van a estar
     * disponibles en el sistema, para ello depende del valor que indique el
     * estado del proyecto (desarrollo, produccion)
     */
    private void initEntitysHelper() {
        if(usuariosFacadeLocal.count()==0){
            try {
                Roles rol = new Roles();
                rol.setIdRol(1);
                rol.setNombre("Administrador");
                rolesFacadeLocal.create(rol);
                Roles rol2 = new Roles();
                rol2.setIdRol(2);
                rol2.setNombre("Profesor");
                rolesFacadeLocal.create(rol2);
                Roles rol3 = new Roles();
                rol3.setIdRol(3);
                rol3.setNombre("Estudiante");
                rolesFacadeLocal.create(rol3);
                Usuarios usuario = new Usuarios();
                usuario.setIdRol(rol);
                usuario.setNombre("Administrador");
                usuario.setNombreUsuario("Administrador");
                usuario.setPassword(EncryptUtil.encryptPassword("123456"));
                usuariosFacadeLocal.create(usuario);
            } catch (NoSuchAlgorithmException ex) {
            }
        }
    }
}
